/*
    KMC Simulation
    Copyright (c) 2012-2014 Filip Rozbořil

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "includes.h"
#include "Utils.h"
#include "Exception.h"

class KmcSettings
{
  	private:
		map<string, string> mKeyToValue; 
  	
  	public:
  		KmcSettings();
  		template<typename T>
		void getValue(string key, T &x)
		{
			auto it = mKeyToValue.find(key);
			if(it != mKeyToValue.end())
			{
				Utils::convertFromString(it->second, x);
			}
			else
			{
				throw Exception("KmcSettings key '" + key + "' not found");
			}
		}
		
	friend ostream& operator<<(ostream& os, KmcSettings& ks);
};

